package wxapp

import (
	"encoding/json"
	"huling/utils/results"
	utils "huling/utils/tool"
	"io/ioutil"
	"time"

	"github.com/gin-gonic/gin"
	"github.com/gohouse/gorose/v2"
)

// 删除保存在名片夹里的名片
func DelCard(context *gin.Context) {
	//获取post传过来的data
	body, _ := ioutil.ReadAll(context.Request.Body)
	var parameter map[string]interface{}
	_ = json.Unmarshal(body, &parameter)
	visit_id, _ := DB().Table("wxapp_card_folder").Where("id", parameter["id"]).Value("visit_id")
	res2, err := DB().Table("wxapp_card_folder").Where("id", parameter["id"]).Delete()
	if err != nil {
		results.Failed(context, "删除失败", err)
	} else {
		DB().Table("wxapp_visit").Data(map[string]interface{}{"issave": 0}).Where("id", visit_id).Update()
		results.Success(context, "删除成功！", res2, nil)
	}
	context.Abort()
}

// 添加名片-保存
func AddCard(context *gin.Context) {
	//获取post传过来的data
	body, _ := ioutil.ReadAll(context.Request.Body)
	var parameter map[string]interface{}
	_ = json.Unmarshal(body, &parameter)
	//当前用户
	getuser, _ := context.Get("user")
	user := getuser.(*utils.UserClaims)
	parameter["add_uid"] = user.ID
	parameter["folder_time"] = time.Now().Unix()
	res, err := DB().Table("wxapp_card_folder").Data(parameter).Insert()
	if err != nil {
		results.Failed(context, "添加失败", err)
	} else {
		//更新访问数据
		DB().Table("wxapp_visit").Data(map[string]interface{}{"issave": 1}).Where("id", parameter["visit_id"]).Update()
		results.Success(context, "添加成功！", res, nil)
	}
}

// 名片添到对应分组-在保存的名片上增加分组
func AddToGroup(context *gin.Context) {
	//获取post传过来的data
	body, _ := ioutil.ReadAll(context.Request.Body)
	var parameter map[string]interface{}
	_ = json.Unmarshal(body, &parameter)
	ids := parameter["ids"]
	res, err := DB().Table("wxapp_card_folder").
		Data(map[string]interface{}{"group_id": parameter["group_id"]}).
		WhereIn("id", ids.([]interface{})).
		Update()
	if err != nil {
		results.Failed(context, "添加失败", err)
	} else {
		results.Success(context, "添加分组成功！", res, nil)
	}
}

// 删除卡片保存数据
func DelCardFolder(context *gin.Context) {
	folder_id := context.DefaultQuery("folder_id", "0")
	visit_id := context.DefaultQuery("visit_id", "0")
	//获取post传过来的data
	res2, err := DB().Table("wxapp_card_folder").Where("id", folder_id).Delete()
	if err != nil {
		results.Failed(context, "删除失败", err)
	} else {
		//更新访问数据
		DB().Table("wxapp_visit").Data(map[string]interface{}{"issave": 0}).Where("id", visit_id).Update()
		results.Success(context, "删除成功！", res2, nil)
	}
}

// 获取分组中的名片数据列表
func GetListByGroup(context *gin.Context) {
	group_id := context.DefaultQuery("group_id", "0")
	keyword := context.DefaultQuery("keyword", "")
	//当前用户
	getuser, _ := context.Get("user")
	user := getuser.(*utils.UserClaims)
	MDB := DB().Table("wxapp_card_folder").Join("wxapp_user", "wxapp_card_folder.card_uid", "=", "wxapp_user.id").
		Where("add_uid", user.ID).Where("group_id", group_id)
	if keyword != "" {
		MDB.Where("name", "like", "%"+keyword+"%")
	}
	list, err := MDB.Fields("wxapp_card_folder.id as folder_id,visit_id,folder_time,card_uid,name,avatar,company,position").Get()
	if err != nil {
		results.Failed(context, "获取名片列表失败", err)
	} else {
		if list == nil {
			list = make([]gorose.Data, 0)
		} else {
			for _, v := range list {
				v["folder_time"] = TimeToStr(v["folder_time"].(int64), "Y")
			}
		}
		results.Success(context, "名片列表", list, nil)
	}
}
